import Vue from 'vue'
import Router from 'vue-router'

// 引入多个模块的规则
import approvalsRouter from './modules/approvals'
import departmentsRouter from './modules/departments'
import employeesRouter from './modules/employees'
import permissionRouter from './modules/permission'
import attendancesRouter from './modules/attendances'
import salarysRouter from './modules/salarys'
import settingRouter from './modules/setting'
import socialRouter from './modules/social'
import userRouter from './modules/user'

Vue.use(Router)

/* Layout */
import Layout from '@/layout'



//  定义静态路由
export const constantRoutes = [{
        path: '/login',
        component: () =>
            import ('@/views/login/index'),
        hidden: true
    },

    {
        path: '/404',
        component: () =>
            import ('@/views/404'),
        hidden: true
    },

    {
        path: '/',
        component: Layout,
        redirect: '/dashboard',
        children: [{
            path: 'dashboard',
            name: 'dashboard',
            component: () =>
                import ('@/views/dashboard/index'),
            meta: { title: '首页', icon: 'dashboard' }
        }]
    },
    {
        path: '/import',
        component: Layout,
        hidden: true, //不显示在左侧菜单中
        children: [{
            path: '', //默认的二级路由
            component: () =>
                import ('@/views/import')
        }]
    },
    userRouter //放置都可以访问的路由
]

// 动态路由 这里导出是为了做权限 导出做权限的时候使用
export const asyncRoutes = [
    approvalsRouter,
    departmentsRouter,
    employeesRouter,
    permissionRouter,
    attendancesRouter,
    salarysRouter,
    settingRouter,
    socialRouter
]


const createRouter = () => new Router({
    mode: 'history', // require service support
    base: 'hr/',
    scrollBehavior: () => ({ y: 0 }),
    routes: [...constantRoutes] // 临时合并所有的路由
})

const router = createRouter() //实例化路由

// Detail see: https://github.com/vuejs/vue-router/issues/1234#issuecomment-357941465
export function resetRouter() {
    const newRouter = createRouter()
    router.matcher = newRouter.matcher // reset router
}

export default router